With the increased use of computers and software applications in today's society comes an increase in the number of methods and systems for developing such applications. Computers can be used to perform a wide variety of tasks based on the application being used. When a computer user inputs a command into a software program, the computer processes the inputs according to instructions within the software program's source code. In order to create a working software application, a program developer typically has to write source code not only for instructions on how to handle user inputs, but also to create the graphical user interface (GUI) and other elements of the program. Writing source code is often a lengthy and time-consuming process, and many software applications routinely take thousands or even hundreds of thousands of lines of code to complete.
To simplify the code writing process, many software developers write code within an integrated development environment (IDE). Most modem IDE's have methods for organizing source code and making it more readable. Often this includes grouping or nesting certain terms and/or functions to make better use of whitespace. For example, in FIG. 1, the “if” statement 101 is indented so as to set it apart, indicating that “if” statement 101 is part of the function immediately above the “if” statement 101 (i.e. the “AddSQLParameterDefinitions” function 103). Similarly, the “throw” statement 102 within “if” statement 101 is also indented to show that “throw” statement 102 is a part of the “if” statement 101. Brackets (e.g. bracket 104) are given their own line, surrounded by whitespace, to signify the end of a loop or function. Tabbing and other indentation schemes have also been used to make source code more readable using whitespace.
Other methods include colorizing certain words and/or operators to set them apart from other text in the software code. For example, in many IDE's, comments will be displayed in one color, variables in another, strings in another, and so on. For instance, in FIG. 2, comment markups (e.g. comment markup 201) are colored gray, comments (e.g. comment 202) are colored green, function types (e.g. function type 203) are colored blue, function identifiers (e.g. function identifier 204) are colored violet and strings (e.g. string 205) are colored red. It should be noted that the colors used in the above example are arbitrary and may be changed by the IDE user. It is also possible to assign colors to other items within the IDE such as variables, entire functions, brackets (according to function), and more. However, in large programs, such a color scheme may be insufficient. In many cases, identifiers are not colorized, thus leaving the identifiers in the source code in their native color (usually black).
The names of functions or routines within the software code are called identifiers. As it is often the case that a developer is working on a team and will have his or her code reviewed by others, it is often very helpful (and is quite commonplace in most software code) to label the functions or routines with a descriptive identifier. For example, a function that stores user input to a certain location may look like the following: “StoreUserInput(location)”. Thus, if another developer were to read through the source code desiring to know which routine accomplished a certain function, a descriptive identifier such as the one above would be quite beneficial.
Furthermore, the words used within a descriptive identifier may have meaning in other portions of the software aside from the function the identifier is used to identify. For instance, in the example above, a developer looking through the code may also be interested in other areas of the source code that deal with “Input”. For example, some functions could receive the input while other functions could retrieve stored input, etc. Similarly, other functions may exist that use variant of the identifier. For instance, in the above example, the source code may contain functions with identifiers that use terms such as “Inputs”, “Inputted” or “Inputting”. In some cases it may be desirable to identify all such identifiers in the source code without systematically searching for each one using a search tool. Current methods lack the ability to provide an easily visible correlation between related words within identifiers.